package system_admin

import (
	"fmt"
	"github.com/gin-gonic/gin"
	"server/src/global"
	"server/src/model"
	"server/src/model/request"
	"server/src/model/response"
	"server/src/server"
	"server/src/utils"
)

type SysTemUser struct {
}

// 给用户加减分数
func (s *SysTemUser) ChangeUserIntegral(c *gin.Context) {
	reqInfo := &request.ChangeUserIntegral{}
	if err := c.ShouldBindJSON(reqInfo); err != nil {
		global.GVL_LOG.Error("用户更改积分参数接受失败，err")
		response.FailWithMessage("用户更改积分参数接受失败"+err.Error(), c)
		return
	}
	fmt.Println("ChangeUserIntegral reqInfo is:", reqInfo)
	// 辨别是机器管理员还是超越管理员
	token := c.Request.Header.Get("token")
	userInfo, _ := server.ServerRobotUser.GetUserToRedis(token)
	if userInfo.Id != -1 {
		response.FailWithMessage("权限不足", c)
	} else {
		//更新数据库中对应用户的信息
		err := server.ServerSysTemUser.UpdaterIntegral(reqInfo)
		if err != nil {
			global.GVL_LOG.Error("积分更改失败，请检查用户积分", err)
			response.FailWithMessage("积分更改失败，请检查用户积分"+err.Error(), c)
			return
		}
		response.OkWithData("积分更改成功", c)

	}
}

// 系统审核
func (s *SysTemUser) SystemAudit(c *gin.Context) {
	reqInfo := &request.AuditInfo{}
	if err := c.ShouldBindJSON(reqInfo); err != nil {
		global.GVL_LOG.Error("用户更改积分参数接受失败，err")
		response.FailWithMessage("用户更改积分参数接受失败", c)
		return
	}
	fmt.Println("SystemAuditUserInfo reqInfo is:", reqInfo)
	// 辨别是机器管理员还是超越管理员
	token := c.Request.Header.Get("token")
	userInfo, _ := server.ServerRobotUser.GetUserToRedis(token)
	if userInfo.Id != -1 {
		response.FailWithMessage("权限不足", c)
	} else {
		//更新数据库中对应用户的信息
		err := server.ServerSysTemUser.UpDataSystemAudit(reqInfo.GroupUser, reqInfo.AuditBool)
		if err != nil {
			global.GVL_LOG.Error("系统审核错误", err)
			response.FailWithMessage("系统审核错误"+err.Error(), c)
			return
		}
		response.OkWithMessage("系统审核成功", c)

	}

}


// 获取机器人管理信息
func (s *SysTemUser) GetGroupInfo(c *gin.Context) {
	reqInfo, err := server.ServerSysTemUser.GetGroupUserInfo()
	if err != nil {
		global.GVL_LOG.Error("获取机器人管理信息错误", err)
		response.FailWithMessage("获取机器人管理信息错误"+err.Error(), c)
		return
	}
	response.OkWithData(reqInfo, c)
}
// 设置游戏胜利概率
func (g *SysTemUser) SetVictoryProbability(c *gin.Context) {
	reqInfo := &model.VictoryProbability{}
	if err := c.ShouldBindJSON(reqInfo); err != nil {
		response.FailWithMessage(utils.GetValidMsg(err, reqInfo), c)
		return
	}
	global.BG_PROBABILITY = reqInfo.VictoryValue
	response.Ok(c)
}

// 查看胜利概率
func (g *SysTemUser) GetVictoryProbability(c *gin.Context) {
	response.OkWithData(global.BG_PROBABILITY, c)
}
